package club.service;

import club.pojo.Comment;
import com.github.pagehelper.PageInfo;
import java.util.List;

// 评论服务接口
// 定义了与评论相关的业务操作方法
public interface CommentService {

    /**
     * 分页查询评论（支持按用户名筛选）
     * @param userName 用户名（模糊匹配），可为空，为空时查询所有评论
     * @param pn 页码
     * @param pageSize 每页数量
     * @return 分页结果对象，包含符合条件的评论列表及分页信息
     */
    PageInfo<Comment> allComment(String userName, Integer pn, Integer pageSize);

    /**
     * 获取某只宠物的所有评论
     * @param petId 宠物ID
     * @return 该宠物的评论列表，若没有评论则返回空列表
     */
    List<Comment> petComments(Integer petId);

    /**
     * 创建一条新评论
     * @param userId 评论者的用户ID
     * @param petId 被评论的宠物ID
     * @param content 评论内容
     * @return 插入成功返回1，失败返回0
     */
    Integer create(Integer userId, Integer petId, String content);

    /**
     * 根据评论ID查询评论详情
     * @param id 评论ID
     * @return 评论对象，若不存在则返回null
     */
    Comment findById(Integer id);

    /**
     * 分页查询所有评论（支持按用户名模糊搜索）
     * @param userName 用户名（模糊匹配），可为空，为空时查询所有评论
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 分页结果对象，包含符合条件的评论列表及分页信息
     */
    PageInfo<Comment> all(String userName, Integer pageNum, Integer pageSize);

    /**
     * 更新评论信息
     * @param adoptAnimal 包含更新字段的评论对象（这里参数名可能有误，应为comment）
     * @return 更新成功返回1，失败返回0
     */
    int update(Comment adoptAnimal);

    /**
     * 根据评论ID删除评论
     * @param id 评论ID
     * @return 删除成功返回1，失败返回0
     */
    int delete(Integer id);
}